import { wxGetStorageSync } from '../utils/WxApiUtils'
import { AuthStepType } from './Lang'
import { AVATAR, NAME, PHONE } from '../store/mutation-types'
import { isNullStr } from './Validate'

export function mustAuth(
  mustAuthStep = AuthStepType.TWO // 需要授权的LEVEL
) {
  // 当前阶段处于会员态（2）或者会员信息态（3），执行resolve操作
  if (getCurrentAuthStep() >= mustAuthStep) return Promise.resolve()
  wx.redirectTo({
    url: '/pages/login',
  })
  // 执行reject操作
  return Promise.reject(new Error('请先登录'))
}

export function hadAuth(mustAuthStep = AuthStepType.TWO) {
  // 当前阶段处于会员态（2）或者会员信息态（3），执行resolve操作
  if (getCurrentAuthStep() >= mustAuthStep) return true
  return false
}

export function getCurrentAuthStep() {
  // // 切换账号登录的时候，始终返回AuthStepType.ONE
  // const loginMode = this.getLoginMode()
  // if (loginMode === LoginMode.SWITCH_ACCOUNT) return AuthStepType.ONE

  // 用户身份定义非会员返回AuthStepType.ONE
  const phone = wxGetStorageSync(PHONE)
  if (isNullStr(phone)) return AuthStepType.ONE

  // 初次登录，未授权用户信息，返回AuthStepType.TWO
  const nickName = wxGetStorageSync(NAME)
  const avatar = wxGetStorageSync(AVATAR)
  if (isNullStr(nickName) && !avatar) return AuthStepType.TWO

  // 都有，返回AuthStepType.THREE
  return AuthStepType.THREE
}
